﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using BL;
using BE;
using System.Data;
using System.Globalization;

namespace UI.Tesoreria
{
    public partial class frmCajaDiaria : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                CargarGrilla();
            }
        }

        #region "Metodos"
        
        private void CargarGrilla()
        {
            LabelErrorListado.Text = "";

            try
            {
                CajaDiaria_BL tipo = new CajaDiaria_BL();
                DataTable listado = tipo.Listado(txtCodigoFiltro.Text.Trim(), txtNombreFiltro.Text.Trim());
                GridCajaDiaria.DataSource = listado;
                GridCajaDiaria.DataBind();

                if (listado.Rows.Count < 1)
                {
                    throw new Exception("No se encontraron resultados");
                }
            }
            catch (Exception ex)
            {
                LabelErrorListado.Text = ex.Message.ToString();
            }
        }

        private void LimpiarDetalle()
        {
            labelID.Text = "";
            txtFechaApertura.Text = "";
            txtSaldo.Text = "";            
        }

        private void cargarCombo()
        {
            List<Caja> dato = null;
            Caja_BL obj = new Caja_BL();

            dato = obj.listaCajas();
            ddlCaja.DataSource = dato;
            ddlCaja.DataTextField = "Nombre";
            ddlCaja.DataValueField = "ID";
            ddlCaja.DataBind();
            ddlCaja.Items.Insert(0, "--Todos--");
        }
        
        #endregion

        #region "Botones"

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            CargarGrilla();
        }

        protected void BtnCancelarCajaDiaria_Click(object sender, EventArgs e)
        {
            formularioNuevo.Hide();
        }

        protected void btnApertura_Click(object sender, EventArgs e)
        {
            LabelErrorListado.Text = "";
            try
            {
                LimpiarDetalle();
                txtFechaApertura.Text = DateTime.Now.ToString();
                formularioNuevo.Show();
                cargarCombo();
                ddlCaja.Focus();
                txtSaldo.Enabled = false;

                chkEstado.Checked = true;
                CargarGrilla();
            }
            catch (Exception ex)
            {
                LabelErrorListado.Text = ex.Message.ToString();
            }
        }

        protected void btnNuevoCajaDiaria_Click(object sender, EventArgs e)
        {
            LabelError.Text = "";
            try
            {
                if (labelID.Text.Equals(""))
                {
                    CajaDiaria caja = new CajaDiaria();
                    Grabar(caja, "NUEVO");
                }
                else
                {
                    CajaDiaria_BL caja_bl = new CajaDiaria_BL();
                    //CajaDiaria caja = caja_bl.(labelID.Text.ToString());
                    //Grabar(tipo, "Modificar");
                }
                formularioNuevo.Hide();
                CargarGrilla();
            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message.ToString();
            }
        }

        private void Grabar(CajaDiaria caja, String operacion)
        {
            caja.idCAJA = Convert.ToInt32(ddlCaja.SelectedItem.Value);
            caja.fechaApertura = Convert.ToDateTime(txtFechaApertura.Text);

            CajaDiaria_BL caja_bl = new CajaDiaria_BL();
            if (operacion.Equals("NUEVO"))
            {
                //caja.IDCreadoPor = User.Identity.Name;
                caja_bl.Insertar(caja);
            }
            else
            {
                /* tipo.IDModificadoPor = User.Identity.Name;
                 tipo_bl.ActualizarTipoDocumentoCpVenta(tipo);*/
            }
            CargarGrilla();
        }

        #endregion

        #region "Grilla"

        protected void GridCajaDiaria_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            LabelErrorListado.Text = "";
            try
            {
                if (e.CommandName.Equals("Eliminar"))
                {
                    LinkButton lb = (LinkButton)e.CommandSource;
                    GridViewRow gvr = (GridViewRow)lb.NamingContainer;
                    int id = (int)GridCajaDiaria.DataKeys[gvr.RowIndex].Value;

                    CajaDiaria_BL caja_bl = new CajaDiaria_BL();
                    caja_bl.Eliminar(id);
                    CargarGrilla();
                }


                if (e.CommandName.Equals("Cierre"))
                {
                    LinkButton lb = (LinkButton)e.CommandSource;
                    GridViewRow gvr = (GridViewRow)lb.NamingContainer;
                    int id = (int)GridCajaDiaria.DataKeys[gvr.RowIndex].Value;
                    Session["IDCajaDiaria"] = id;                                                                                      
                    Response.Redirect("frmCajaCierre.aspx");

                }

            }
            catch (Exception ex)
            {
                LabelErrorListado.Text = ex.Message;
                throw;
            }
        }

        protected void GridCajaDiaria_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Session["cod_alumno"] = GridCajaDiaria.SelectedRow.Cells[1].Text;                        
            //Session["fechaApertura"] = GridCajaDiaria.SelectedRow.Cells[2].Text;
            //string a = Session["fechaApertura"].ToString();
           
            //Response.Redirect("frmCajaCierre.aspx");
        }

        #endregion

        #region "Combos"

        protected void ddlCaja_SelectedIndexChanged(object sender, EventArgs e)
        {
            LabelError.Text = "";
            try
            {
                Caja_BL bl = new Caja_BL();
                Caja caja = bl.obtenerCajaPorId(ddlCaja.SelectedItem.Value);
                txtSaldo.Text = String.Format(CultureInfo.InvariantCulture, "{0:0,0.00}", caja.Saldo);
            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message.ToString();

            }
        }

        #endregion

       
               
    }
}